
import java.util.ArrayList;
import java.util.List;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Luisa Portillo 
 */
public class StackL <L> implements InterfazStackL <L>{
    // Atributos
    private boolean empty;
    private List<L> array;
    private int cant;
      
    //Constructor en donde se inicializan los valores de los atributos y se
    // crea el array list
    public StackL(){
        array = new ArrayList<L>();
        empty = true;
        cant = 0;
    }

    
    // Metodo que ingresa los valores en el Stack
    @Override
    public void push(L valor) {
        array.add(valor);
        cant++;
        empty = false;
    }

    // Metodo que elimina datos del Stack
    @Override
    public L pop() {
        L dato = null;
        if(empty == false){
            cant--;
            dato = array.get(cant);
            array.remove(cant);
            
        }
        else{
           System.out.println("El Stack se encuentra vacio");
        }
    return dato; 
    }

    // Metodo que solo se utiliza para verificar que dato es el proximo en salir.
    @Override
    public L peek() {
        L dato1 = null;
        return dato1;
    }

    // Metodo que verifica que si el Stack esta vacio.
    @Override
    public boolean isEmpty() {
        if(cant==0)
            empty = true;
        return empty;
    }

    /*
    public void operarNumeros(int r2){
        double d1=0;
        double d2=0;
        double resp=0;
        
        if(r2>0 && r2<5){
            switch(r2){
                //Se realiza una suma
                case 1:
                    resp = d1 + d2;
                    break;
                //Se realiza una resta
                case 2:
                    resp = d1 - d2;
                    break;
                //Se multiplican los numeros
                case 3:
                    resp = d1 * d2;
                    break;
                //Se dividen los numeros
                case 4:
                    //Divide los numeros, si existe una division por cero no realiza la operacion
                    if(d2==0){
                        System.out.println("Se esta realizando una division por cero, no es permitido.");
                    }
                    else{
                        resp = d1/d2;
                    }
                    break;
                default:
             }
        }    
        else{
            System.out.println("\n No es una opcion del menu, vuelva intentarlo.");
        }
    System.out.println("El resultado de la operacion es:" + resp);
    
    
    }
    */
}


    
    

